/* * DatabaseDefinitionManager * * Copyright (C) 2010 Jaroslav Merxbauer * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ package notwa.gui; import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Collection; import java.util.Vector; import javax.swing.BorderFactory; import javax.swing.DefaultCellEditor; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.ListSelectionModel; import javax.swing.table.TableCellEditor; import notwa.common.Config; import notwa.common.NotwaConnectionInfo; import notwa.gui.components.JPasswordFieldRenderer; import notwa.gui.components.JTableCellRenderer; import notwa.gui.datamodels.DatabaseManagerModel; public class DatabaseDefinitionManager extends JDialog implements ActionListener { private JButton okButton; private JButton stornoButton; private JButton newRowButton; private JButton removeButton; private JTable ddmTable; private DatabaseManagerModel dmModel; private JTableCellRenderer tableCellRenderer = new JTableCellRenderer(); private DefaultCellEditor passwordEditor; private Collection<NotwaConnectionInfo> nci; public DatabaseDefinitionManager() { init(); } public void init() { this.setLayout(new BorderLayout()); this.setTitle("NOTWA - NOT Only Team Work Assistent - Database definition"); this.setSize(700,500); this.setModalityType(JDialog.ModalityType.APPLICATION_MODAL); this.setLocationRelativeTo(null); this.setResizable(false); this.add(this.initComponents(), BorderLayout.NORTH); this.add(this.initButtons(), BorderLayout.SOUTH); this.setVisible(true); } private JPanel initButtons() { JPanel buttonsPanel = new JPanel(); newRowButton = new JButton("Add row"); removeButton = new JButton("Remove"); okButton = new JButton("Ok"); stornoButton = new JButton("Storno"); newRowButton.addActionListener(this); removeButton.addActionListener(this); okButton.addActionListener(this); stornoButton.addActionListener(this); buttonsPanel.add(newRowButton); buttonsPanel.add(removeButton); buttonsPanel.add(okButton); buttonsPanel.add(stornoButton); return buttonsPanel; } private JPanel initComponents() { JPanel jp = new JPanel(); jp.setLayout(new GridLayout(1,0)); nci = Config.getInstance().getConnecionStrings(); dmModel = new DatabaseManagerModel(nci); ddmTable = new JTable(); ddmTable.setModel(dmModel); ddmTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); this.resizeAndColorizeTable(); jp.add(new JScrollPane(ddmTable)); return jp; } private void resizeAndColorizeTable() { /* * Default TextField that allows simple cell editing */ JTextField defaultJTextField = new JTextField(); defaultJTextField.setBorder(BorderFactory.createEmptyBorder()); TableCellEditor textFieldEditor = new DefaultCellEditor(defaultJTextField); /* * Default PasswordField that allows password cell editing */ JPasswordField defaultPasswordField = new JPasswordField(); defaultPasswordField.setBorder(BorderFactory.createEmptyBorder()); passwordEditor = new DefaultCellEditor(defaultPasswordField); /* * Setting up cell editors */ ddmTable.getColumnModel().getColumn(0).setCellEditor(textFieldEditor); ddmTable.getColumnModel().getColumn(1).setCellEditor(textFieldEditor); ddmTable.getColumnModel().getColumn(2).setCellEditor(textFieldEditor); ddmTable.getColumnModel().getColumn(3).setCellEditor(textFieldEditor); ddmTable.getColumnModel().getColumn(4).setCellEditor(textFieldEditor); ddmTable.getColumnModel().getColumn(5).setCellEditor(passwordEditor); /* * Column resizing */ ddmTable.getColumnModel().getColumn(0).setMaxWidth(180); //label ddmTable.getColumnModel().getColumn(1).setMaxWidth(110); //dbname ddmTable.getColumnModel().getColumn(2).setMaxWidth(110); //host ddmTable.getColumnModel().getColumn(3).setMaxWidth(50); //port ddmTable.getColumnModel().getColumn(4).setMaxWidth(125); //user ddmTable.getColumnModel().getColumn(5).setMaxWidth(125); //password /* * Default cell renderers */ ddmTable.getColumnModel().getColumn(0).setCellRenderer(tableCellRenderer); ddmTable.getColumnModel().getColumn(1).setCellRenderer(tableCellRenderer); ddmTable.getColumnModel().getColumn(2).setCellRenderer(tableCellRenderer); ddmTable.getColumnModel().getColumn(3).setCellRenderer(tableCellRenderer); ddmTable.getColumnModel().getColumn(4).setCellRenderer(tableCellRenderer); ddmTable.getColumnModel().getColumn(5).setCellRenderer(new JPasswordFieldRenderer()); } @Override public void actionPerformed(ActionEvent ae) { if (ae.getSource() == okButton) { /* * We must stop editing before closing dialog and save all edited fields */ try { ddmTable.getCellEditor().stopCellEditing(); } catch (Exception e) {}; dmModel.fireTableDataChanged(); Config.getInstance().save(); this.setVisible(false); } else if (ae.getSource() == stornoButton) { Config.getInstance().reloadConfig(); this.setVisible(false); } else if (ae.getSource() == newRowButton) { dmModel.addRow(new Vector<Object>()); } else if (ae.getSource() == removeButton) { if (ddmTable.getSelectedRow() != -1) dmModel.removeRow(ddmTable.getSelectedRow()); } } }